package cn.rxmind.dlicense.core.validator;

import cn.rxmind.dlicense.core.base.DLicenseContent;
import cn.rxmind.dlicense.core.event.DLicenseEventPublisher;

/**
 * 证书校验器
 *
 * @author renxin
 * @email renxinzhiliangzhi@163.com
 * @date 2021/4/12 1:54 下午
 */
public interface DLicenseValidator {

    /**
     * 校验证书并得到结果,trueLicense框架自身的校验逻辑
     * @param content
     * @return
     */
    ValidateResult validateLicense(DLicenseContent content);

    /**
     * 得到校验排序字段
     * @return
     */
    default int order(){
        return 0;
    }

    /**
     * 校验未通过干点啥
     * @param result
     */
    default void ifInvalid(ValidateResult result){};

    /**
     * 校验通过干点啥
     *
     * @param result
     */
    default void ifValid(ValidateResult result){};

    /**
     * 校验器描述
     * @return
     */
    default String description(){return "default validator";}

    /**
     * 注入事件发布器
     * @param publisher
     */
    default void setPublisher(DLicenseEventPublisher publisher){}

}
